/*******************************************************************************
*	                           bsp.c
*******************************************************************************/
#include "bsp.h"

/*******************************************************************************
*	                           function
*******************************************************************************/
void bsp_gpio_init(void);
void bsp_cpu_option_check(void);
void bsp_pw_delay_for_bug(void);
void bsp_clk_init(void);
void bsp_adc_init(void);
uint32_t bsp_pwm_init(void);
uint32_t bsp_cap_init(void);
void bsp_clk_init(void);
void bsp_qpi_init(void);
void ext_spi_init(void);

/*******************************************************************************
* @brief  bsp_Init : first line in first task
* \param[in] none
* \retval: none
*******************************************************************************/
void bsp_Init(void)
{
	bsp_pw_delay_for_bug();

	bsp_cpu_option_check();

	bsp_clk_init();

	bsp_delay_init();

	bsp_gpio_init();

	app_tick_init(1);

	bsp_dly_init();
	
	bsp_uart_init();

	bsp_pwm_init();

	bsp_cap_init();
	
	bsp_qpi_init();
	
	ext_spi_init();
}

/*******************************************************************************
* @brief  bsp_clk_init
* \param[in] none
* \retval: none
*******************************************************************************/
void bsp_clk_init(void)
{
	crm_periph_clock_enable(CRM_DMA2_PERIPH_CLOCK, TRUE);
	crm_periph_clock_enable(CRM_DMA1_PERIPH_CLOCK, TRUE);

	crm_periph_reset(CRM_DMA1_PERIPH_RESET, TRUE);
	crm_periph_reset(CRM_DMA1_PERIPH_RESET, FALSE);

	crm_periph_reset(CRM_DMA2_PERIPH_RESET, TRUE);
	crm_periph_reset(CRM_DMA2_PERIPH_RESET, FALSE);
}

/*******************************************************************************
* @brief  bsp_pw_delay_for_bug
* \param[in] none
* \retval: none
*******************************************************************************/
void bsp_pw_delay_for_bug(void)
{
	volatile uint32_t dly = 120 * 1000 * 1000 / 12;
	while (dly--)
	{
	}
}

/*******************************************************************************
* @brief  bsp_Idle
* \param[in] none
* \retval: none
*******************************************************************************/
void bsp_Idle(void)
{
}
